[AWS] Amazon SNS の新機能「Mobile Push」を Android で使ってみた
はじめに
8月13日(現地時間)、Amazon SNS にモバイルデバイス用の新機能「Mobile Push」がリリースされました。これによって SNS と GCM を組み合わせたプッシュ通知機能を簡単に実装することができます。ちなみに iOS は APNS、Kindle Fire は ADM といったようにクロスプラットフォームなプッシュ通知を簡単に実装することができます。しかも100万件まで無料!
ということでサクッとサンプルコードを試してみました。
ちなみに SNS ってなんじゃーってかたはこちらを、GCMについてはこちらをご参照ください!
iOS 版はこちら!
事前準備
- AWSアカウントの作成
- Google APIアカウントの作成 (自分の Google アカウントで OK です)
- Google Play Services SDK のインポート
- AWS SDK for Java のインポート(サーバーサイドの実装を Java で行うため)
サンプルアプリを実行してみる
ということでサンプルアプリを実行してみたいと思います。まずは Google API Console で GCM のサービスを有効にします。
https://code.google.com/apis/console
また、API キーが必要になるのでメモっておきます。
次にクライアントの実装です。以下よりサンプルファイルをダウンロードしましょう。
https://s3.amazonaws.com/codesamples/sns/latest/snsmobilepush.zip
この中の AndroidMobilePushApp がプロジェクトフォルダなので、Eclipse なり Android Studio なりにインポートします。また Google Play Services ライブラリはまだインポートされていないので忘れずにインポートするようにしましょう。styles.xml でコンパイルエラーがありましたが、ビルド SDK のバージョンが 2.2 になっていたのが原因でした。上げておきましょうね。
次に res/strings.xml の project_number を Google API のプロジェクト番号にします。
<?xml version="1.0" encoding="utf-8"?> <resources> … <!-- TODO: Enter your project number --> <string name="project_number"></string> … </resources>
プロジェクト番号は Google API Console の URL の project: 以降の数値です。
ここまでできたら一度実行します。以下の画面になれば成功です!
Logcat に registrationId が出力されているのでコピーしておきます。
次に push 元のアプリの実装ですが、サンプルアプリに Java 用のコードがあるのでそれを使ってみます。まずは Java プロジェクトを新規作成し、サンプルファイルの SNSSamples/src フォルダをすべてコピペし、AWS SDK for Java をインポートします。
あとはソースコードを若干修正します。まずは AwsCredentials.properties に AWS にアクセスキーとシークレットキーを入力します。
#TODO: your AWS Credentials from http://aws.amazon.com/security-credentials accessKey: secretKey:
次に SNSMobilePush.java の 81 行目がコメントアウトされているので外します。
sample.demoAndroidAppNotification(Platform.GCM);
次に demoAndroidAppNotification() メソッドのもろもろの設定値をセットしていきます。
public void demoAndroidAppNotification(Platform platform){ // TODO: Please fill in following values for your application String registrationId = "Logcat で出力された RegistrationId"; String principal = ""; // principal is not applicable for GCM String serverAPIKey = "Google API の Service API Key"; String applicationName = "gcmpushapp"; demoNotification(platform, principal, serverAPIKey, registrationId, applicationName); }
ここまでできたら実行してみましょう。コンソール画面に下図のように表示されたら成功です。
アプリを見てみると…メッセージが出力されています!
以下、追記しました。
AWS Management Console から直接 Publish してみる
上記では AWS SDK for Java を使って Publish しましたが、サクッと試すにはちょっと面倒ですし、ちょっと分かりづらかったですね。ということで AWS Management Console から直接 Publish してみます。
https://console.aws.amazon.com/sns/home
「Add a New App」をクリックし「Application Name」、「Push Platform」、「API Key」をそれぞれ設定していきます。
次に「Add Endpoints」で「Device Token」に RegistrationId を入力します。
以下のようになれば追加成功です。
あとは「Publish」をクリックして、メッセージを適当に入れて Publish します。
おぉ。無事に Push できました!
まとめ
サーバーレスでプッシュ通知を作ることもできるので、手軽に導入できます!GCM をすでに使っているアプリも簡単に SNS に置き換えができますね。